#ifndef _C_STACK_H
#define _C_STACK_H
#include "c_list.h"
#include "c_array.h"
#include <stdbool.h>

enum StackType{
    ArrayStack = 0,
    ListStack,
};

typedef struct Stack{
    StackType type;
    void* stack;
}Stack;

Stack* ConstructStack(StackType type);
void DestructStack(Stack* stk);
void Push(Stack* stk,void* data);
void Pop(Stack* stk);
void* Top(Stack* stk);
bool Empty(Stack* stk);
unsigned int Length(Stack* stk);
void Clear(Stack* stk);

#endif